package com.fourth.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fourth.vo.EmpConditionVO;
import com.github.pagehelper.PageInfo;
import com.ljx.entity.Permission;
import com.ljx.entity.Role;

import java.util.List;
import java.util.Map;

/**
 * @author Mr.ma
 * @since 2023/2/27 13:57
 **/
public interface RoleService {
    /**
     * 查询角色信息，含分页，条件
     * @param currentPage
     * @param pageSize
     * @param condition
     * @return
     */
    IPage<Role> selectAllByCondition(Integer currentPage, Integer pageSize, Role condition);

    /**
     * 插入角色信息
     * @param role
     * @return
     */
    int insert(Role role);

    /**
     * 修改角色信息
     * @param role
     * @return
     */
    int updateRole(Role role);

    /**
     * 根据id删除角色信息
     * @param id
     * @return
     */
    int deleteById(String id);

    /**
     * 查询所有角色
     * @return
     */
    List<Role> selectAll();

    /**
     * 将redis中的数据更新到数据库
     * @return
     */
    int upStatusFromRedis2DB();

    /**
     * 获取所有权限以及该角色所拥有的权限
     * @param roleId
     * @return
     */
    Map<String, List> selectPermission(String roleId);

    /**
     * 为角色分配权限
     * @param roleId
     * @param menuids
     * @return
     */
    int updatePermission(String roleId, String[] menuids);

    /**
     * 更改角色状态
     * @param id
     * @param status
     * @return
     */
    int upStatus(String id, String status);

    /**
     * 根据id获取角色，redis缓存使用
     * @param id
     * @return
     */
    Role findById(String id);

    /**
     * 编辑角色，redis缓存更新
     * @param role
     * @return
     */
    Role edit (Role role);

    /**
     * 根据id删除角色，缓存更新
     * @param id
     * @return
     */
    int deleteRoleById(String id);

    /**
     * 分页查询，缓存
     * @param currentPage
     * @param pageSize
     * @param condition
     * @return
     */
    Map<String,String> queryPage(Integer currentPage, Integer pageSize,Role condition);

    /**
     * 分页查询，缓存
     * @param currentPage
     * @param pageSize
     * @return
     */
    Map<String,String> queryPage(Integer currentPage, Integer pageSize);
}
